In developing an expert system, many previous specification techniques are suitable only for a specific problem solving architecture or for a specific type of expert system (e.g., heuristic classification systems). Accordingly, it is difficult to practically apply such previous techniques to a wide range of expert systems and problem solving architectures. Other previous techniques provide only a conceptual level approach without any formalized proofing of concepts applied to real expert systems.
Some previous techniques, such as rapid prototyping, fail to provide a formal framework for specifying the expert system's functionality. For example, in rapid prototyping techniques, a simple prototype of the expert system is quickly developed without comprehensive formal specification. A shortcoming of such previous techniques is that after developing the simple prototype, no comprehensive formal specification is available to assist in scaling up the simple prototype into a full-scale expert system.
Moreover, with such previous techniques, it is difficult to systematically verify and validate the expert system at intermediate stages of development, since such techniques fail to provide a comprehensive formal specification. Intermediate verification is desirable because it helps identify inadequacies of the expert system at an early stage of development before additional effort is wasted. Similarly, without such a specification, it is difficult to systematically test and maintain the expert system. Accordingly, without such a specification, design failures are more likely to occur, and product costs are more likely to increase.
To assist the verification, validation, testing and maintenance, previous techniques have been used to specify conventional system applications such as filing system, real-time kernel, and user interface design. Nevertheless, such previous techniques have limited application to highly complex and sophisticated expert systems, because such expert systems problems typically are not as well-defined and well-understood as conventional systems problems. Moreover, solutions for conventional systems are algorithmic, while solutions for expert systems typically are non-algorithmic.
Thus, a need has arisen for a method and system for specifying an expert system according to a formal framework. A need has also arisen for a method and system for specifying a wide range of expert systems and problem solving architectures. Further, a need has arisen for a method and system for specifying an expert system to assist in scaling up a prototype into a full-scale expert system. Moreover, a need has arisen for a method and system for specifying an expert system to assist in systematic verification and validation of the expert system at intermediate stages of development. A further need has arisen for a method and system for specifying an expert system to assist in systematic testing and maintenance of the expert system. Another need has arisen for a method and system for specifying an expert system, with formalized proofing of concepts applied to real expert systems.